/**  
* @author renbangjie renbangjie@126.com  
* @date 2016年2月23日 下午7:49:07
* @version V1.0  
*/
package com.ai.common.core.utils;

import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.ai.common.core.annotation.Ignore;

/**
 * bean处理工具
 * 
 * @author renbangjie renbangjie@126.com
 * @date 2016年2月23日 下午7:49:07
 */
public class BeanUtils {

	/**
	 * javabean转map
	 * 
	 * @date 2016年2月23日 下午7:59:14
	 * @param obj
	 * @return
	 * @throws Exception
	 *             Map<String,Object>
	 */
	@SuppressWarnings("rawtypes")
	public static Map<String, String> toMap(Object obj) throws Exception {
		if (obj != null) {
			Class cls = obj.getClass();
			Map<String, String> result = new HashMap<String, String>();
			for (Field field : cls.getDeclaredFields()) {
				if(field.getAnnotation(Ignore.class) != null){
					continue;
				}
				field.setAccessible(true);
				result.put(field.getName(), String.valueOf(field.get(obj)));
			}
			return result;
		}
		return null;
	}

	/**
	 * 获取一个class的某个字段，一直追溯到顶级父class对象
	 * 
	 * @param name
	 * @param cs
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static Field getClassField(String fieldName, Class cs) {
		for (; cs != Object.class; cs = cs.getSuperclass()) {
			try {
				Field field = cs.getDeclaredField(fieldName);
				if (field != null) {
					return field;
				}
				field = cs.getField(fieldName);
				if (field != null) {
					return field;
				}
			} catch (Exception e) {
			}
		}
		return null;
	}

	public static String formatDate(Date date) {
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String scdlsj = sdf.format(date);
		return scdlsj;
	}
}
